1. Field of the Invention
The present invention relates, in general, to systems for delivering self-service solutions to individual computer systems from a central service provider, and more particularly, to methods and systems for ensuring compatibility amongst distributed software processes implementing remotely provided services such as monitoring, trend reporting, asset tracking and change over time services.
2. Relevant Background
As computing environments become more complex there is an increasing need to provide remote services. In general, remote services refer to a class of services that are implemented externally (i.e., on a remote computer system) with respect to a computer system that is using the services (i.e., a local computer system). Remotely provided services enable tasks that are difficult, inefficient, or impossible to implement on a local computer system to be provided by the remote computer system that may have access to more data or data, software, or processing power than is available on a local computer system.
A specific area of remote services includes the effective and cost efficient monitoring and control of servers, clients and computer network components. System monitoring involves collecting, analyzing, and acting upon various metrics that affect performance of a computer system such as CPU usage, memory usage, disk storage performance and the like. Monitoring solutions are adopted to reduce customer and service downtime, to improve customer service and staff and customer productivity, to reduce computer and network costs, and to reduce operating expenditures (including reducing support and maintenance staff needs). For these and other reasons, the need for system monitoring and management tools has increased dramatically and with this increased demand has come pressure for more effective and user-friendly tools and features.
Many operating systems include or can be augmented by monitoring software that monitor various hardware and software systems on the computer system in which the operating system is installed. Modern operating systems are bundled with various software to monitor CPU usage, memory paging, disk fragmentation and the like. This “local” monitoring is of some benefit, but is often disruptive to use and unfamiliar to most system users. Moreover, these local monitoring solutions lack a global perspective that enables a wider variety of conditions and interactions to be detected. For example, local monitoring cannot easily detect when a software driver or component is outdated as such detection requires reference to external information. Similarly, local monitoring cannot benefit from trends that are more readily observable over many systems.
Hence, “remote” monitoring systems have been implemented to collect monitored data from many systems into a centralized resource, analyze the collected data in the centralized resource, and make decisions and recommendations based on a more global perspective than is possible with local monitoring systems. Remote monitoring systems use various methods to obtain, collect and analyze local system data from a number of machines. Hence, remote monitoring systems have the potential to provide the benefits of a closely monitored system while offloading the monitoring tasks to a remote system and performing those tasks with a more global perspective than is possible with local system monitoring solutions.
There are a number of problems and limitations associated with existing remote service provision systems. Certain information about a local system can only be obtained by processes executing on the local system itself, with privileged access to operating system resources. Hence, these systems require that hardware and/or software (referred to as “local agents”) be resident on the local systems to collect data, implement certain behaviors, and to control communications with the remote service provider. There may be tens or hundreds of local agents in a given local system. Moreover, there may be hundreds or thousands of local systems in a given environment. These local agents will vary in type from system-to-system, and in many cases will have multiple versions as the agents are updated to include new functionality and behaviors.
It is necessary that the local agents implemented on the local systems be compatible with complementary components implemented on the remote service provider system(s). One method for ensuring such compatibility is to force all monitored systems to update their local agents whenever a change is made to the monitoring system(s). However, such forced compliance is often disruptive. Hence, it is often preferable to make the remote service provider system backward compatible with all deployed instances of the local agents. As a result, the service provider systems often become bulky as the monitoring system must support an increasingly large number of remote agent types and versions. Such a system does not scale well to support a large and diverse set of local agent types and versions. Nor does such as system scale well to include many customer systems. Accordingly, a need exists for systems and methods of implementing remotely provided services in a manner that allows new types of services to be added, and new versions of existing services to be added, with minimal impact on the remote system that is providing the services.